package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.dao.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.service.UserService;
import com.qf.util.EmailUtils;
import com.qf.util.MD5Utils;
import com.qf.util.RandomUtils;

/**
 * @author 千锋健哥
 */
public class UserServiceImpl implements UserService {

    @Override
    public boolean checkUserName(String username) {
        UserDao userDao = new UserDaoImpl();
        User user = userDao.findUserByUserName(username);
        if (user == null) {
            return false;
        } else {
            return true;
        }
    }

    @Override
    public void register(User user) {
        //1. 将密码使用md5加密
        user.setPassword(MD5Utils.md5(user.getPassword()));
        //2. 设置用户默认状态为0未激活
        user.setStatus("0");
        //3. 设置用户角色默认为0普通用户
        user.setRole(0);
        //4. 设置用户发送激活邮件的随机码
        user.setCode(RandomUtils.createActive());
        //5. 调用dao保存用户数据
        UserDao userDao = new UserDaoImpl();
        userDao.insert(user);

        //6. 调用service完成发送激活邮件业务
        EmailUtils.sendEmail(user);
    }

    @Override
    public void active(String email, String code) {
        //1. 调用dao, 根据code + email进行激活
        UserDao userDao = new UserDaoImpl();
        userDao.updateStatus(email, code);
    }

    @Override
    public User login(String username, String password) {
        //1. 根据用户名查询用户对象
        UserDao userDao = new UserDaoImpl();
        User user = userDao.findUserByUserName(username);

        //2. 判断如果查询不到, 返回false, 登录失败
        if (user == null) {
            return null;
        }

        //3. 判断用户激活状态, 如果没有激活登录失败.
        if (!user.getStatus().equals("1")) {
            return null;
        }

        //4. md5加密消费者输入的密码
        String encodePassword = MD5Utils.md5(password);

        //5. 校验密码的密文, 如果密文一致证明明文也一致, 登录成功.
        if (user.getPassword().equals(encodePassword)) {
            return user;
        }

        return null;
    }

}
